import GCJ_CLASS_TYPE = require('./../../common/GCJ_CLASS_TYPE');
import FColorBase = require('./FColorBase');
import FColor = require('./FColor');
var CONFIG=require('../../../../common/config');
export  = FGradient;

/**
 *
 * @author 
 *
 */
class FGradient extends FColorBase{
    // 类型
    public line = 1; // 1表示线性渐变，0表示圆形渐变
    public w = 0; // 宽度
    public h = 0; // 宽度
    public r=0;// 旋转角度(单位弧度)
    public tx=0; // 偏移x
    public ty=0; // 偏移y
    public colors= new Array<FColor>(); // stop的颜色的FColor对象数组
    public alphas= new Array<number>(); // stop的透明度，范围[0，1]，例如：两个stop[1, 0.5];
    public ratios= new Array<number>(); // stop的位置，范围[0x0,0xFF]，例如：两个stop[0x0, 0xFF];
    
	public constructor() {
        super();
        this.ct = GCJ_CLASS_TYPE.CLASS_TYPE_FGradient;
	}
	
    // 从json对象(注意不是json字符串)中解析
    public fromJson(jsonObj, versionId) { 
        super.fromJson(jsonObj,versionId);
                
        this.line = jsonObj.line;
        this.w = jsonObj.w;
        this.h= jsonObj.h;
        this.r= jsonObj.r;
        this.tx= jsonObj.tx;
        this.ty= jsonObj.ty;
        for(var i=0; i<jsonObj.colors.length; i++){
            var clr = new FColor();
            clr.fromJson(jsonObj.colors[i], versionId);
            this.colors.push(clr);
        }
        this.alphas= jsonObj.alphas;
        this.ratios= jsonObj.ratios;
    }
    // 转成json字符串
    public toJson():string {
        // 去掉父json字符串的头尾
        var superJson = super.toJson();
        superJson = superJson.substr(1,superJson.length-2);
                
        var ret = '{';
            ret +=superJson;
                        
            // line
            ret +=',';
            ret += '"line":';
            ret += this.line;
            
            // w
            ret +=',';
            ret += '"w":';
            ret += this.w;
            // h
            ret +=',';
            ret += '"h":';
            ret += this.h;
            // r
            ret +=',';
            ret += '"r":';
            ret += this.r;
            // tx
            ret +=',';
            ret += '"tx":';
            ret += this.tx;
            // ty
            ret +=',';
            ret += '"ty":';
            ret += this.ty;
            //colors
            ret +=',';
            ret += '"colors":[';
                for(var i=0; i<this.colors.length; i++){
                    if(i>0)	ret +=',';
                    ret += this.colors[i].toJson();
                }
                ret += ']';
                
                //alphas
                ret +=',';
                ret += '"alphas":[';
                    for(var i=0; i<this.alphas.length; i++){
                        if(i>0)	ret +=',';
                        ret += this.alphas[i];
                    }
                    ret += ']';
                    //ratios
                    ret +=',';
                    ret += '"ratios":[';
                        for(var i=0; i<this.ratios.length; i++){
                            if(i>0)	ret +=',';
                            ret += this.ratios[i];
                        }
                        ret += ']';
                        
            ret+='}';
            return ret;
        }
	
	
    //SJG_MARK_APPEND--------------------


}//SJG_MARK_END-------------------------
